# 类中每个属性都必须有初始值，哪怕这个值是0或者空字符串。在初始方法__init__()内指定初始值是可行的，
# 如果你对某个属性这样做了，就无需包含为它提供初始值的形参，下面来添加一个名为odemeter的汽车里程碑属性，车才出厂其公里初始值总是0，
# 对应的还需要添加一个对应的实例方法read_odemeter(),用于读取汽车的里程碑
class Car():
    '''初始化方法：描述汽车的属性'''
    def __init__(self,brand,model,year):#这里不需要包含形参odemeter
        self.brand = brand
        self.model = model
        self.year = year
        self.odemeter = 0      # 在__init__()方法下定义的属性且设置了默认值，就无需在init()后面包含为它提供初始值的形参
    '''实例方法：返回整洁的描述性信息'''
    def get_descriptive_name(self):
        long_name=self.brand+' '+self.model+' '+str(self.year)
        return long_name.upper()
    '''实例方法：用于打印读取的汽车行驶公里数'''
    def read_odemeter(self):
        print('This car has '+str(self.odemeter)+' miles on it')

'''创建一个实例 my_new_car'''
my_new_car=Car('BWM','X7',2021)
print("-------------------------------------------------")
print('my new car is '+ my_new_car.get_descriptive_name())
my_new_car.read_odemeter()   #不要多加一个print,否则运行结果后面会出现一个None
